package br.com.foxinline.servico;

import br.com.foxinline.modelo.Ato;
import br.com.foxinline.modelo.AtoCampo;
import java.util.List;
import javax.ejb.Stateless;
import javax.persistence.Query;

/**
 *
 * @author cadomeireles
 */
@Stateless
public class AtoServico extends ServicoGenerico<Ato> {

    public AtoServico() {
        super(Ato.class);
    }

    public List<Ato> pesquisar(Ato ato) {
        String sql = "select ato from Ato ato where ato.ativo = true";
        
        if (ato.getCodigo() != null && !ato.getCodigo().isEmpty()) {
            sql += " and lower(ato.codigo) like '%" + ato.getCodigo() +"%'";
        }
        if (ato.getDescricao() != null && !ato.getDescricao().isEmpty()) {
            sql += " and lower(ato.descricao) like '%" + ato.getDescricao() +"%'";
        }

        Query query = getEntityManager().createQuery(sql);
        return query.getResultList();
    }
    
    public List<AtoCampo> obterCampos(Ato ato) {
        String sql = "select atoCampos from Ato ato join ato.atoCampos atoCampos where ato = :ato";
        
        Query query = getEntityManager().createQuery(sql);
        
        if (ato != null && ato.getId() != null) {
            query.setParameter("ato", ato);
        }

        return query.getResultList();
    }

    @Override
    public void deletar(Ato ato) {
        ato.setAtivo(false);
        super.atualizar(ato);
    }
    
    public List<Ato> autocompletar(String query){
        return buscarPeloNome(query);
    }

    public List<Ato> buscarPeloNome(String query){
        List<Ato> atos = getEntityManager().createQuery("select ato from " + Ato.class.getSimpleName() + " ato where ato.ativo = true and lower(ato.descricao) like '%" + query.toLowerCase().trim() + "%'").getResultList();
        return atos;
    }

}
